home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Gigantic Games 2
/
Gigantic Games 2.iso
/
pc
/
_a_
/
abitur
/
txt
/
zeugnis.mod
< prev
next >
Wrap
Text File
|
1994-12-23
|
5KB
|
236 lines
IMPLEMENTATION MODULE Zeugnis;
FROM Globals IMPORT Spieler, SpielerPtr, AlleSpieler, AnzahlSpieler;
FROM Intuition IMPORT WindowPtr, RefreshWindowFrame;
FROM AbiturScreen IMPORT OpenTextWindow, WaitCloseGadget,
roT, weisS, dgraU, schwarZ, blaU;
FROM Graphics IMPORT RastPortPtr, Move, Draw, Text, SetAPen,
ClearScreen, jam2, SetBPen, SetDrMd, SetSoftStyle,
AskSoftStyle, FontStyleSet, FontStyles;
FROM Str IMPORT Length;
FROM Conversions IMPORT ValToStr; (* für Jahr und Anzahl Absenzen *)
FROM SYSTEM IMPORT ADR;
FROM FaecherNamen IMPORT FaecherNamen, FaecherTypen;
FROM NoteConversions IMPORT NoteToString;
FROM BerechneSchnitt IMPORT BerechneSchnitt;
VAR RP: RastPortPtr;
PROCEDURE Vorgedruckt;
VAR AMaske, NMaske: FontStyleSet;
BEGIN
AMaske := AskSoftStyle(RP);
NMaske := SetSoftStyle(RP, FontStyleSet{}, AMaske);
SetAPen(RP, schwarZ)
END Vorgedruckt;
PROCEDURE VonHand;
VAR AMaske, NMaske: FontStyleSet;
BEGIN
AMaske := AskSoftStyle(RP);
NMaske := SetSoftStyle(RP, FontStyleSet{italic}, AMaske);
SetAPen(RP, blaU)
END VonHand;
CONST Bund1 = 6;
Bund2 = 90;
Bund3 =135;
Bund4 =190;
PROCEDURE ZeigSchuelerZeugnis(Nr: INTEGER);
(* Zeigt das Zeugnis und wartet auf CloseGadget *)
(* Die nummer 1 ist der erste Schüler in der Liste *)
VAR SZeig: SpielerPtr;
i: INTEGER;
W: WindowPtr;
str: ARRAY[0..6] OF CHAR; (* ValToStr *)
err: BOOLEAN;
h: INTEGER;
F: FaecherTypen;
ZZNote: REAL;
BEGIN
IF Nr > AnzahlSpieler THEN RETURN END;
IF Nr < 1 THEN RETURN END;
(* Finde Schüler *)
SZeig := AlleSpieler;
IF Nr > 1 THEN
FOR i := 1 TO Nr -1 DO
SZeig := SZeig^.Next
END
END;
BerechneSchnitt(SZeig);
W := OpenTextWindow(300, 214);
RP := W^.rPort;
Move(RP, 0, 0);
SetBPen(RP, weisS);
SetDrMd(RP, jam2);
ClearScreen(RP);
RefreshWindowFrame(W);
(** NAME *)
Vorgedruckt;
Move(RP, Bund1, 22);
Text(RP, ADR("NAME:"), 4);
VonHand;
Move(RP, Bund1 + 42, 22);
Text(RP, ADR(SZeig^.Name), Length(SZeig^.Name));
(* Absolviert oder Schüler oder Herausgefallen *)
VonHand;
Move(RP, Bund4, 22);
IF SZeig^.Jahr = 5 THEN
Text(RP, ADR("Absolviert"), 10)
ELSIF SZeig^.Jahr = 6 THEN
SetAPen(RP, roT);
Text(RP, ADR("Geflogen"), 8)
ELSE
Text(RP, ADR("Schüler(in)"), 11)
END;
(** PROFI **)
Vorgedruckt;
Move(RP, Bund4, 110);
Text(RP, ADR("Provi"), 5);
VonHand;
Move(RP, Bund4, 121);
IF ODD(SZeig^.Provisorisch) THEN
SetAPen(RP, roT);
Text(RP, ADR("Ja"), 2)
ELSE
Text(RP, ADR("Nein"), 4)
END;
(** Gefährdet **)
Vorgedruckt;
Move(RP, Bund4, 143);
Text(RP, ADR("Gefährdet"), 9);
VonHand;
Move(RP, Bund4, 154);
IF SZeig^.Provisorisch >= 5 THEN
SetAPen(RP, roT);
Text(RP, ADR("Ja"), 2)
ELSE
Text(RP, ADR("Nein"), 4)
END;
(** Absenzen **)
Vorgedruckt;
Move(RP, Bund4, 77);
Text(RP, ADR("Absenzen"), 8);
VonHand;
Move(RP, Bund4, 88);
ValToStr(SZeig^.Absenzen, FALSE, str, 10, 3, " ", err);
IF NOT err THEN
Text(RP, ADR(str), Length(str))
END;
(** Jahr **)
IF SZeig^.Jahr < 5 THEN
Vorgedruckt;
Move(RP, Bund4, 176);
Text(RP, ADR("Jahr"), 4);
VonHand;
Move(RP, Bund4, 187);
ValToStr(SZeig^.Jahr, FALSE, str, 10, 3, " ", err);
IF NOT err THEN
Text(RP, ADR(str), Length(str))
END
END;
(* Schnitt *)
Vorgedruckt;
Move(RP, Bund4, 44);
Text(RP, ADR("Schnitt"), 7);
VonHand;
Move(RP, Bund4, 55);
NoteToString(SZeig^.Zeugnis.GesammtSchnitt , TRUE, str);
Text(RP, ADR(str), Length(str));
(* Zeugnis Fächer Namen *)
Vorgedruckt;
Move(RP, Bund1, 44);
Text(RP, ADR("Fächer"), 6);
h := 55;
FOR F := Turnen TO Informatik DO
SetAPen(RP, dgraU);
Move(RP, Bund1, h);
Text(RP, ADR(FaecherNamen[F].VollName),
Length(FaecherNamen[F].VollName));
INC(h, 11)
END;
(* Vornoten *)
Vorgedruckt;
Move(RP, Bund2, 44);
Text(RP, ADR("VNote"), 5);
h := 55;
VonHand;
FOR F := Turnen TO Informatik DO
Move(RP, Bund2, h);
NoteToString(SZeig^.Zeugnis.VorNote[F], FALSE, str);
Text(RP, ADR(str), 3);
INC(h, 11)
END;
(* Laufende oder SchlussNoten *)
IF SZeig^.Jahr >= 5 THEN
(** Absolviert SchlussNoten *)
Vorgedruckt;
Move(RP, Bund3, 44);
Text(RP, ADR("Schluß"), 6);
h := 55;
VonHand;
FOR F := Turnen TO Informatik DO
Move(RP, Bund3, h);
NoteToString(SZeig^.Zeugnis.Schnitt[F] , TRUE, str);
Text(RP, ADR(str), 4);
INC(h, 11)
END
ELSE
(* Laufende Noten *)
Vorgedruckt;
Move(RP, Bund3, 44);
Text(RP, ADR("Akt"), 3);
h := 55;
VonHand;
FOR F := Turnen TO Informatik DO
Move(RP, Bund3, h);
IF SZeig^.Zeugnis.AnzInSumme[F] = 0 THEN
Text(RP, ADR("---"), 3)
ELSE
ZZNote := SZeig^.Zeugnis.AktuelleSumme[F] /
FLOAT(SZeig^.Zeugnis.AnzInSumme[F]);
NoteToString(ZZNote , TRUE, str);
Text(RP, ADR(str), Length(str))
END;
INC(h, 11)
END;
END;
WaitCloseGadget(W)
END ZeigSchuelerZeugnis;
BEGIN
END Zeugnis.